Tootsville::Infinity-Report-Bug

Function

Infinity-Report-Bug names a function, with lambda list (D USER RECIPIENT/S):

This method allows the client to “phone home” to report a bug.

Lisp REPORT-BUG = JSON reportBug

The bug report itself is just a giant string embedded in the “bug” element, but a “cause” element will be treated as the subject. Note that the bug report — like all JSON input — will be cut off at a certain limit (typically 4KiB), so it's most helpful to keep it short & sweet: Typically, this should be something like a single stack backtrace (with as much detail as possible), rather than a complete log trace or something.

The suggested usage is to include the exception itself as “cause,” the backtrace up to a maximum of 1KiB, a log backtrace up to its last 1KiB as “bug,” and as much machine-formatted system information as possible in the “info'' object. Fields of ``info”

As many fields as possible, limit the contents to a reasonable length though…

Note that the keys listed are strings, so e.g.:

 info ["navigator.language"] = navigator.language;
 info ["navigator.product"] = navigator.product;

ActionScript example:

 var info:Object = {
 "flash.sys.ime": flash.system.System.ime,
 "flash.sys.totalMemory": flash.system.System.totalMemory,
 "flash.sys.useCodePage": flash.system.System.useCodePage
 };
 // imperfect but close
 for ( var key in flash.system.Capabilities ) {
 info["flash.sysCap." + key] = flash.system.Capabilities[key];
 }

navigator.language
JavaScript: navigator.language
navigator.product
JavaScript: navigator.product
navigator.appVersion
JavaScript: navigator.appVersion
navigator.platform
JavaScript: navigator.platform
navigator.vendor
JavaScript: navigator.vendor
navigator.appCodeName
JavaScript: navigator.appCodeName
navigator.cookieEnabled
JavaScript: navigator.cookieEnabled
navigator.appName
JavaScript: navigator.appName
navigator.productSub
JavaScript: navigator.productSub
navigator.userAgent
JavaScript: navigator.userAgent
navigator.vendorSub
JavaScript: navigator.vendorSub
screen.height
JavaScript: screen.height;

ActionScript: flash.system.Capabilities.screenResolutionX

screen.width
JavaScript: screen.width;

ActionScript: flash.system.Capabilities.screenResolutionY

screen.availHeight
JavaScript: screen.availHeight;

ActionScript: flash.display.Stage.fullScreenHeight

screen.availWidth
JavaScript: screen.availWidth;

ActionScript: flash.display.Stage.fullScreenWidth

window.outerHeight
JavaScript: window.outerheight note case
window.outerWidth
JavaScript: window.outerwidth note case
window.innerHeight
JavaScript: window.innerheight note case
window.innerWidth
JavaScript: window.innerwidth note case
window.windowName
JavaScript: the window.name property of the highest parent of this window (frame); e.g.
 var topWindow = window.parent;
 for (; topWindow.parent != topWindow;
        topWindow = topWindow.parent)
 ;
 info ["window.windowName"] = topWindow.name;

flash.sys.totalMemory
ActionScript: flash.system.System.totalMemory
flash.sys.ime
ActionScript: flash.system.System.ime
flash.sys.useCodePage
ActionScript: flash.system.System.useCodePage
flash.sysCap.avHardwareDisable
ActionScript: flash.system.Capabilities.avHardwareDisable
flash.sysCap.hasAccessibility
ActionScript: flash.system.Capabilities.hasAccessibility
flash.sysCap.hasAudio
ActionScript: flash.system.Capabilities.hasAudio
flash.sysCap.hasAudioEncoder
ActionScript: flash.system.Capabilities.hasAudioEncoder
flash.sysCap.hasEmbeddedVideo
ActionScript: flash.system.Capabilities.hasEmbeddedVideo
flash.sysCap.hasIME
ActionScript: flash.system.Capabilities.hasIME
flash.sysCap.hasMP3
ActionScript: flash.system.Capabilities.hasMP3
flash.sysCap.hasPrinting
ActionScript: flash.system.Capabilities.hasPrinting
flash.sysCap.hasScreenBroadcast
ActionScript: flash.system.Capabilities.hasScreenBroadcast
flash.sysCap.hasScreenPlayback
ActionScript: flash.system.Capabilities.hasScreenPlayback
flash.sysCap.hasStreamingAudio
ActionScript: flash.system.Capabilities.hasStreamingAudio
flash.sysCap.hasStreamingVideo
ActionScript: flash.system.Capabilities.hasStreamingVideo
flash.sysCap.hasTLS
ActionScript: flash.system.Capabilities.hasTLS
flash.sysCap.hasVideoEncoder
ActionScript: flash.system.Capabilities.hasVideoEncoder
flash.sysCap.isDebugger
ActionScript: flash.system.Capabilities.isDebugger
flash.sysCap.isEmbeddedInAcrobat
ActionScript: flash.system.Capabilities.isEmbeddedInAcrobat
flash.sysCap.language
ActionScript: flash.system.Capabilities.language
flash.sysCap.localFileReadDisable
ActionScript: flash.system.Capabilities.localFileReadDisable
flash.sysCap.manufacturer
ActionScript: flash.system.Capabilities.manufacturer
flash.sysCap.os
ActionScript: flash.system.Capabilities.os
flash.sysCap.pixelAspectRatio
ActionScript: flash.system.Capabilities.pixelAspectRatio
flash.sysCap.playerType
ActionScript: flash.system.Capabilities.playerType
flash.sysCap.screenColor
ActionScript: flash.system.Capabilities.screenColor
flash.sysCap.screenDPI
ActionScript: flash.system.Capabilities.screenDPI
flash.sysCap.version
ActionScript: flash.system.Capabilities.version
flash.displayState
ActionScript: if flash.display.Stage.displayState == FULL_SCREEN_INTERACTIVE, then "fullScreen"; for NORMAL, return "window".
flash.frameRate
ActionScript: flash.display.Stage.frameRate
flash.quality
ActionScript: flash.display.Stage.quality
flash.scaleMode
ActionScript: flash.display.Stage.scaleMode

// ActionScript example function systemReport:Object () { return { "screen": { "height": flash.system.Capabilities.screenResolutionX, "width": flash.system.Capabilities.screenResolutionY, "availHeight": flash.display.Stage.fullScreenHeight, "availWidth": flash.display.Stage.fullScreenWidth, }, "flash": { "sys": { "totalMemory": flash.system.System.totalMemory, "ime": flash.system.System.ime, "useCodePage": flash.system.System.useCodePage, }, "sysCap": { "avHardwareDisable": flash.system.Capabilities.avHardwareDisable, "hasAccessibility": flash.system.Capabilities.hasAccessibility, "hasAudio": flash.system.Capabilities.hasAudio, "hasAudioEncoder": flash.system.Capabilities.hasAudioEncoder, "hasEmbeddedVideo": flash.system.Capabilities.hasEmbeddedVideo, "hasIME": flash.system.Capabilities.hasIME, "hasMP3": flash.system.Capabilities.hasMP3, "hasPrinting": flash.system.Capabilities.hasPrinting, "hasScreenBroadcast": flash.system.Capabilities.hasScreenBroadcast, "hasScreenPlayback": flash.system.Capabilities.hasScreenPlayback, "hasStreamingAudio": flash.system.Capabilities.hasStreamingAudio, "hasStreamingVideo": flash.system.Capabilities.hasStreamingVideo, "hasTLS": flash.system.Capabilities.hasTLS, "hasVideoEncoder": flash.system.Capabilities.hasVideoEncoder, "isDebugger": flash.system.Capabilities.isDebugger, "isEmbeddedInAcrobat": flash.system.Capabilities.isEmbeddedInAcrobat, "language": flash.system.Capabilities.language, "localFileReadDisable": flash.system.Capabilities.localFileReadDisable, "manufacturer": flash.system.Capabilities.manufacturer, "os": flash.system.Capabilities.os, "pixelAspectRatio": flash.system.Capabilities.pixelAspectRatio, "playerType": flash.system.Capabilities.playerType, "screenColor": flash.system.Capabilities.screenColor, "screenDPI": flash.system.Capabilities.screenDPI, "version": flash.system.Capabilities.version }, "displayState": ( flash.display.Stage.displayState == FULL_SCREEN_INTERACTIVE ? "fullScreen" : "window" ), "frameRate": flash.display.Stage.frameRate, "quality": flash.display.Stage.quality, "scaleMode": flash.display.Stage.scaleMode } }; }

jso - Must contain a single string attribute named “bug.” Should contain an attribute named “info” with system information key-value pairs (see above). May also have a subject of “cause” as a string.

u - The user reporting the bug.

File

Defined in file src/infinity/legacy-commands.lisp.